/* 对axios进行二次封装 */
import axios from 'axios'
/* 导入HomeStore  */
import useHomeStore from '@/stores/modules/homeStore';

// 创建一个自定的axios方法(比原axios多了个基地址)
// axios函数请求的url地址前面会被拼接基地址, 然后axios请求baseURL+url后台完整地址
export const baseURL = 'http://123.207.32.32:1888/api'//导出基地址给获取文章详情请求使用
/* export const baseURL = 'http://127.0.0.1:3307'//导出基地址给获取文章详情请求使用 */
const myAxios = axios.create({ baseURL, timeout: 5000 })



//请求拦截器
myAxios.interceptors.request.use(function (config) {
    console.log('请求拦截器');
    //在发起时，统一携带请求头Authorization和token值
    //判断，登录页面和注册页面，vuex里无token，而且登录接口和注册接口也不需要携带token(其他页面需要)
    /*  if (!whiteAPIList.includes(config.url)) {
         //配置请求头带上token
         config.headers.Authorization = store.state.token
     } */

    //获取HomeStore
    const HomeStore = useHomeStore()

    HomeStore.isLoading = true

    return config

}, function (error) {
    //此函数类似catch函数()里return
    //口诀: return非Promise对象值，会作为成功的结果，返回给下一个Promise对象(axios留在原地)
    //口诀:returnPromise对象，这个Promise对象状态，返回给下一个Promise对象
    // Promise.reject()原地留下一个新的Promise对象(状态为失败）它是Promise的类方法reject()

    return Promise.reject(error)
})

// 定义响应拦截器
myAxios.interceptors.response.use(function (response) {
    // 响应状态码为 2xx 时触发成功的回调，形参中的 response 是“成功的结果”
    console.log('响应拦截器response', response);
    //获取HomeStore
    const HomeStore = useHomeStore()
    //修改isLoading状态
    HomeStore.isLoading = false
    return response
}, function (error) {
    // 响应状态码不是 2xx 时触发失败的回调，形参中的 error 是“失败的结果”
    console.log('响应拦截器error', error);

    //获取HomeStore
    const HomeStore = useHomeStore()
    //修改isLoading状态
    HomeStore.isLoading = false
    return Promise.reject(error)
})

// 导出自定义的axios方法, 供外面调用传参发请求
export default myAxios


